home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / c / gcc261ud-c.lha / gnu / os-include / inline / realtime.h < prev    next >
C/C++ Source or Header  |  1994-09-22  |  5KB  |  177 lines

  1. #ifndef _INLINE_REALTIME_H
  2. #define _INLINE_REALTIME_H
  3.  
  4. #include <sys/cdefs.h>
  5. #include <inline/stubs.h>
  6.  
  7. __BEGIN_DECLS
  8.  
  9. #ifndef BASE_EXT_DECL
  10. #define BASE_EXT_DECL
  11. #define BASE_EXT_DECL0 extern struct RealTimeBase * RealTimeBase;
  12. #endif
  13. #ifndef BASE_PAR_DECL
  14. #define BASE_PAR_DECL
  15. #define BASE_PAR_DECL0 void
  16. #endif
  17. #ifndef BASE_NAME
  18. #define BASE_NAME RealTimeBase
  19. #endif
  20.  
  21. BASE_EXT_DECL0
  22.  
  23. extern __inline struct Player *
  24. CreatePlayerA (BASE_PAR_DECL struct TagItem *tagList)
  25. {
  26.   BASE_EXT_DECL
  27.   register struct Player * _res  __asm("d0");
  28.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  29.   register struct TagItem *a0 __asm("a0") = tagList;
  30.   __asm __volatile ("jsr a6@(-0x2a)"
  31.   : "=r" (_res)
  32.   : "r" (a6), "r" (a0)
  33.   : "a0","a1","d0","d1", "memory");
  34.   return _res;
  35. }
  36. #ifndef NO_INLINE_STDARG
  37. #define CreatePlayer(tags...) \
  38.   ({ struct TagItem _tags[] = { tags }; CreatePlayerA (_tags); })
  39. #endif /* not NO_INLINE_STDARG */
  40. extern __inline void 
  41. DeletePlayer (BASE_PAR_DECL struct Player *player)
  42. {
  43.   BASE_EXT_DECL
  44.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  45.   register struct Player *a0 __asm("a0") = player;
  46.   __asm __volatile ("jsr a6@(-0x30)"
  47.   : /* no output */
  48.   : "r" (a6), "r" (a0)
  49.   : "a0","a1","d0","d1", "memory");
  50. }
  51. extern __inline BOOL 
  52. ExternalSync (BASE_PAR_DECL struct Player *player,long minTime,long maxTime)
  53. {
  54.   BASE_EXT_DECL
  55.   register BOOL  _res  __asm("d0");
  56.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  57.   register struct Player *a0 __asm("a0") = player;
  58.   register long d0 __asm("d0") = minTime;
  59.   register long d1 __asm("d1") = maxTime;
  60.   __asm __volatile ("jsr a6@(-0x42)"
  61.   : "=r" (_res)
  62.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  63.   : "a0","a1","d0","d1", "memory");
  64.   return _res;
  65. }
  66. extern __inline struct Conductor *
  67. FindConductor (BASE_PAR_DECL STRPTR name)
  68. {
  69.   BASE_EXT_DECL
  70.   register struct Conductor * _res  __asm("d0");
  71.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  72.   register STRPTR a0 __asm("a0") = name;
  73.   __asm __volatile ("jsr a6@(-0x4e)"
  74.   : "=r" (_res)
  75.   : "r" (a6), "r" (a0)
  76.   : "a0","a1","d0","d1", "memory");
  77.   return _res;
  78. }
  79. extern __inline ULONG 
  80. GetPlayerAttrsA (BASE_PAR_DECL struct Player *player,struct TagItem *tagList)
  81. {
  82.   BASE_EXT_DECL
  83.   register ULONG  _res  __asm("d0");
  84.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  85.   register struct Player *a0 __asm("a0") = player;
  86.   register struct TagItem *a1 __asm("a1") = tagList;
  87.   __asm __volatile ("jsr a6@(-0x54)"
  88.   : "=r" (_res)
  89.   : "r" (a6), "r" (a0), "r" (a1)
  90.   : "a0","a1","d0","d1", "memory");
  91.   return _res;
  92. }
  93. #ifndef NO_INLINE_STDARG
  94. #define GetPlayerAttrs(a0, tags...) \
  95.   ({ struct TagItem _tags[] = { tags }; GetPlayerAttrsA ((a0), _tags); })
  96. #endif /* not NO_INLINE_STDARG */
  97. extern __inline APTR 
  98. LockRealTime (BASE_PAR_DECL unsigned long lockType)
  99. {
  100.   BASE_EXT_DECL
  101.   register APTR  _res  __asm("d0");
  102.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  103.   register unsigned long d0 __asm("d0") = lockType;
  104.   __asm __volatile ("jsr a6@(-0x1e)"
  105.   : "=r" (_res)
  106.   : "r" (a6), "r" (d0)
  107.   : "a0","a1","d0","d1", "memory");
  108.   return _res;
  109. }
  110. extern __inline struct Conductor *
  111. NextConductor (BASE_PAR_DECL struct Conductor *previousConductor)
  112. {
  113.   BASE_EXT_DECL
  114.   register struct Conductor * _res  __asm("d0");
  115.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  116.   register struct Conductor *a0 __asm("a0") = previousConductor;
  117.   __asm __volatile ("jsr a6@(-0x48)"
  118.   : "=r" (_res)
  119.   : "r" (a6), "r" (a0)
  120.   : "a0","a1","d0","d1", "memory");
  121.   return _res;
  122. }
  123. extern __inline LONG 
  124. SetConductorState (BASE_PAR_DECL struct Player *player,unsigned long state,long time)
  125. {
  126.   BASE_EXT_DECL
  127.   register LONG  _res  __asm("d0");
  128.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  129.   register struct Player *a0 __asm("a0") = player;
  130.   register unsigned long d0 __asm("d0") = state;
  131.   register long d1 __asm("d1") = time;
  132.   __asm __volatile ("jsr a6@(-0x3c)"
  133.   : "=r" (_res)
  134.   : "r" (a6), "r" (a0), "r" (d0), "r" (d1)
  135.   : "a0","a1","d0","d1", "memory");
  136.   return _res;
  137. }
  138. extern __inline BOOL 
  139. SetPlayerAttrsA (BASE_PAR_DECL struct Player *player,struct TagItem *tagList)
  140. {
  141.   BASE_EXT_DECL
  142.   register BOOL  _res  __asm("d0");
  143.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  144.   register struct Player *a0 __asm("a0") = player;
  145.   register struct TagItem *a1 __asm("a1") = tagList;
  146.   __asm __volatile ("jsr a6@(-0x36)"
  147.   : "=r" (_res)
  148.   : "r" (a6), "r" (a0), "r" (a1)
  149.   : "a0","a1","d0","d1", "memory");
  150.   return _res;
  151. }
  152. #ifndef NO_INLINE_STDARG
  153. #define SetPlayerAttrs(a0, tags...) \
  154.   ({ struct TagItem _tags[] = { tags }; SetPlayerAttrsA ((a0), _tags); })
  155. #endif /* not NO_INLINE_STDARG */
  156. extern __inline void 
  157. UnlockRealTime (BASE_PAR_DECL APTR lock)
  158. {
  159.   BASE_EXT_DECL
  160.   register struct RealTimeBase *a6 __asm("a6") = BASE_NAME;
  161.   register APTR a0 __asm("a0") = lock;
  162.   __asm __volatile ("jsr a6@(-0x24)"
  163.   : /* no output */
  164.   : "r" (a6), "r" (a0)
  165.   : "a0","a1","d0","d1", "memory");
  166. }
  167.  
  168. #undef BASE_EXT_DECL
  169. #undef BASE_EXT_DECL0
  170. #undef BASE_PAR_DECL
  171. #undef BASE_PAR_DECL0
  172. #undef BASE_NAME
  173.  
  174. __END_DECLS
  175.  
  176. #endif /* _INLINE_REALTIME_H */
  177.